package Top100;

import Algorithm.comprehensive.backpack.Backpack_Dynamic;
import Algorithm.comprehensive.lis.LIS;
import Algorithm.comprehensive.lis.LIS_Dynamic;
import Algorithm.comprehensive.sumofSubSequence.LMG.LMG;
import Algorithm.comprehensive.sumofSubSequence.LMG.LMG_Dynamic;
import Algorithm.comprehensive.sumofSubSequence.LMS.LMS;
import Algorithm.comprehensive.sumofSubSequence.LMS.LMS_Dynamic;
import Algorithm.comprehensive.sumofSubSequence.LSG.LSG;
import Algorithm.comprehensive.sumofSubSequence.LSG.LSG_Dynamic;
import Algorithm.comprehensive.sumofSubSequence.LSS.LSS;
import Algorithm.comprehensive.sumofSubSequence.LSS.LSS_Dynamic;
import Algorithm.dynamic.*;
import Algorithm.dynamic.lcs.LCS;
import Algorithm.dynamic.lcs.LCS_Dynamic;

/**
 * @author liujun
 * @version 1.0
 * @date 2021/12/7
 * @author—Email ljfirst@mail.ustc.edu.cn
 * @blogURL https://blog.csdn.net/ljfirst
 * @description 动态规划专题
 */

public interface Dynamic {

    default void Dynamic() {

        // 背包问题的动态规划法
        Backpack_Dynamic backpack = new Backpack_Dynamic();
        // 换零钱
        ChangeMoney_Least_Dynamic money = new ChangeMoney_Least_Dynamic();
        // 将数组分割成两个相等的子集
        CombinationNum_NonRepeat_Dynamic combination = new CombinationNum_NonRepeat_Dynamic();
        /*
         Tips：换零钱 和 背包问题 的区别在于：背包问题是每个物品选择一个，但是换零钱是每个物品可以选择 N 次
         */

        // 编辑距离
        EditDistance ed = new EditDistance();
        // 字符组成判断
        StringInDic sdic = new StringInDic();
        // 计算路径数
        CountPathNum cp = new CountPathNum();

        // 连续问题
        LSS lss = new LSS_Dynamic();  // LSS 最大子段和    (连续)     LargestSumOfSubSequence
        LMS lms = new LMS_Dynamic();  // LMS 最大子段乘积   (连续)    LargestMultiOfSubSequence
        LIS lis = new LIS_Dynamic();  // LIS 最长递增子序列 (不连续)   LongestIncreasingOfSubsequence
        LCS lcs = new LCS_Dynamic();  // LCS 最长公共子序列 (不连续)   LongestCommonOfSequence
        LSG lsg = new LSG_Dynamic();  // LSG 最大间隔和    (不连续)   LargestSumOfGap
        LMG lmg = new LMG_Dynamic();  // LMG 最大间隔乘积   (不连续)  LargestMultiOfGap

        // 预测赢家 动态规划法
        PredictTheWinner_Dynamic pd = new PredictTheWinner_Dynamic();
    }
}
